A typical distributed computer system includes multiple nodes. Each node may send and/or receive requests to/from other nodes. In the client/server model of the distributed computer system, a client sends a request to the server. The server receives the request, processes the request and sends a result back to the client. In order to process the request, the server may have a web application to provide the services.
When a client sends the request to the web application, the client specifies the Uniform Resource Locator (URL) for the server. The URL provides a specific address of the server and the web application on the server. In order to provide extensions to serve the multiple web applications, agents (such as filters, servlets, and plugins) are developed. An agent may be used, for example, to log and authenticate the client, debug and transform the output for a client, uncompress and encode the input from the client, etc. Further, the agent may be used in a manner transparent to the client. For example, when a client sends a request to the URL for the web application, the request may be intercepted by an agent, unbeknownst to the client. Upon intercepting the request, the agent may perform a preprocessing step prior to forwarding the request to the web application. For example, before allowing a client to view restricted data, an agent may check a database for access conditions for the client. This allows for the extended functionality, such as security, to be performed in the background.
Because the agent is transparent to the client, the agent does not have a physical web resource. Rather, the agent is only associated with the URL of the web application. An agent may be associated with one or more URL's. For example, the same agent may be used to ensure that the access rights have been satisfied for all web applications associated with a family of URLs.
Also associated with the agent is the configuration data for the agent. The configuration data for the agent may specify the operational behavior of the agent. For example, the configuration data may specify authentication properties, session properties, level of security enforcement, caching parameters, etc.
In order to load configuration data into the agent, the configuration data for the agent is read during initialization time of the application or the web server. Thus, in order to change the configuration data, a user needs to find the configuration data on the server and make the changes to the configuration data.
Once the changes are made to the configuration data, the server is restarted to apply the changes to the agents using the configuration data. As the server may be used concurrently by multiple users, restarting the server may interrupt several users. Accordingly, restarting the server is typically performed during non-peak hours, which may occur several hours after the changes to the configuration data are made.
One method of checking for the changes made to the configuration data is to constantly poll the configuration data. When a change is noticed, event listeners are notified of the changes. Polling the configuration data may occur, for example, at certain time intervals. By adjusting the length of the time intervals, a user may choose between how current the agent is with respect to the configuration data and performance overhead associated with polling.